#pragma once
#include "Structure.h"

namespace DL {
	Tensor3D<float>& Conv2D(const Tensor3D<float>& tensor, int stride, int padding, const Tensor4D<float>& weight, const Tensor1D<float>& bias);
	Tensor3D<float>& MaxPooling2D(const Tensor3D<float>& tensor, int size, int stride, int padding);
	Tensor3D<float>& Relu(const Tensor3D<float>& tensor);
	Tensor1D<float>& Relu(const Tensor1D<float>& tensor);
	Tensor1D<float>& Flatten(const Tensor3D<float>& tensor);
	Tensor1D<float>& Linear(const Tensor1D<float>& tensor, const Tensor2D<float>& weight,const Tensor1D<float>& bias);
	Tensor1D<float>& SoftMax(const Tensor1D<float>& tensor);
	Tensor3D<float>& Normalize(const Tensor3D<float>& tensor, const float mean[], const float std[]);
}